﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace Mantenimiento.Negocio
{
    [Serializable]
    public class Incidencia
    {
        #region CAMPOS
        private int _id;
        private DateTime _fecha;
        private int _kilometros;
        private int _horas;
        private string _observaciones;
        private string _matricula;
        #endregion

        #region PROPIEDADES
        public int Id
        {
            get { return _id; }
            set { _id = value; }
        }
        public DateTime Fecha
        {
            get { return _fecha; }
            set { _fecha = value; }
        }
        public int Kilometros
        {
            get { return _kilometros; }
            set { _kilometros = value; }
        }
        public int Horas
        {
            get { return _horas; }
            set { _horas = value; }
        }
        public string Observaciones
        {
            get { return _observaciones; }
            set { _observaciones = value; }
        }
        public string Matricula
        {
            get { return _matricula; }
            set { _matricula = value; }
        }
        #endregion

        #region CONSTRUCTORES
        public Incidencia()
        {
            _id = int.MinValue;
        }
        public Incidencia(DataRow dr)
        {
            _id = int.Parse(dr["Id"].ToString()); ;
            _fecha = DateTime.Parse(dr["Fecha"].ToString());
            _kilometros = int.Parse(dr["Kilometros"].ToString()); 
            _horas = int.Parse(dr["Horas"].ToString()); 
            _observaciones = dr["Observaciones"].ToString(); 
            _matricula = dr["Matricula"].ToString(); 
        }
        #endregion

        #region METODOS PROPIOS
        public void guardar()
        {

            if (_id == int.MinValue)
            {
                // SI ES UN REGISTRO NUEVO, INSERTAMOS EN LA BBDD
                CAD.Incidencia.insertar(_matricula, _fecha, _observaciones, _kilometros, _horas);
            }
            else
            {
                // SI EL REGISTRO EXISTIA, LO MODIFICAMOS
                CAD.Incidencia.modificar(_matricula, _fecha, _observaciones, _kilometros, _horas, _id);
            }
        }
        public void eliminar()
        {
            CAD.Incidencia.eliminar(_id);
        }
        #endregion

        #region METODOS ESTATICOS DE CLASE
        public static List<Incidencia> obtenerTodos()
        {
            List<Incidencia> lista = new List<Incidencia>();
            DataTable dt = CAD.Incidencia.buscar();
            foreach (DataRow dr in dt.Rows)
            {
                try
                {
                    lista.Add(new Incidencia(dr));
                }
                catch (Exception ex)
                {
                }
            }
            return lista;
        }
        public static List<Incidencia> obtenerxmatricula(string pMatricula)
        {
            List<Incidencia> lista = new List<Incidencia>();
            DataTable dt = CAD.Incidencia.buscarxmatricula(pMatricula);
            foreach (DataRow dr in dt.Rows)
            {
                try
                {
                    lista.Add(new Incidencia(dr));
                }
                catch (Exception ex)
                {
                }
            }
            return lista;
        }
        public static Incidencia obtener(int pId)
        {
            try
            {
                DataTable dt = CAD.Incidencia.buscar(pId);
                if (dt.Rows.Count == 1)
                {
                    Incidencia m = new Incidencia(dt.Rows[0]);
                    return m;
                }
                else
                {
                    return null;
                }
            }
            catch (Exception ex)
            {
                return null;
            }
        }
        #endregion
    }
}
